//
// Created by shkstart on 2023/9/2.
// 二维数组中指针的使用

#include <stdio.h>


int main() {

    //另例
//    float f = 12.3F;
//    float *pFloat = &f;
//
//    int *pInt = &f; //合适吗？ 不合适！

    int a[3][2] = {{10, 20},
                   {30, 40},
                   {50, 60}};

    //int *p = a; //理解：将a[0]的地址赋给指针变量p
    /*
     * 上述的方式赋值是不合适的。为什么？
     * 因为p是指向int类型的变量或常量的地址。
     * a,代表着a[0]的地址，a[0]的类型不是int类型，而是int[2].
     * 因为类型不同，不建议赋值。
     *
     * 应该如何赋值呢？
     * */
    int (*q)[2] = a; //此时的赋值操作是准确的。此时的a[0]与q的类型是相同的。

    //继续，如何使用q表示相关的针对于二维数组的操作
    printf("%p\n",a); //获取a[0]的地址
    printf("%p\n",q); //获取a[0]的地址

    printf("%p\n",a + 1); //获取a[1]的地址
    printf("%p\n",q + 1); //获取a[1]的地址

    return 0;
}
